package com.example.micro.netty.server.buf;

import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;

public class NettyByteBufDemo1 {

    public static void main(String[] args) {

        //创建一个bytebuf
        //1.创建 对象 ， 该对象包含一个数组arr，是一个byte[10]
        //2.在netty中的buffer中，不需要使用flip 进行反转
        //  底层维护了readerIndex 和 writerIndex
        //3.通过readerIndex 和 writerIndex 和 capacity ，将Buffer分成三个区域
        //  0---readerIndex 已经读取的区域
        //  readerIndex---writerIndex 可读的区域
        //  writerIndex---capacity 可写的区域

        ByteBuf byteBuf = Unpooled.buffer(10);

        for (int i = 0; i < 10; i++) {
            byteBuf.writeByte(i);
        }

        System.out.println("capacity=" + byteBuf.capacity());

        //输出
        for (int i = 0; i < byteBuf.capacity(); i++) {
            //不会造成readerIndex变化
            System.out.println(byteBuf.getByte(i));
        }

        //另一种方式输出
        for (int i = 0; i < byteBuf.capacity(); i++) {
            //会造成readerIndex变化
            System.out.println(byteBuf.readByte());
        }

    }

}
